//
//  ViewController.swift
//  UITextViewAndTextFieldDemo
//
//  Created by itshizhan on 2020/10/19.
//  Copyright © 2020 itshizhan. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UITextViewDelegate, UITextFieldDelegate {
	
	//创建UITextView对象
	let textView = UITextView(frame:CGRect(x: 10, y: 64, width: 300, height: 100))
  //创建UITextField对象
	let textField = UITextField(frame: CGRect(x: 10, y: 200, width: 300, height: 40))
	override func viewDidLoad() {
		super.viewDidLoad()
		// init TextView
		initTextView()
		// init TextField
		initTextField()
	}

	func initTextView() {
		//添加到视图上
		view.addSubview(textView)

		//背景颜色设置
		textView.backgroundColor = UIColor(red: 0.82, green: 0.82, blue: 0.82, alpha: 0.6)
		//设置textview里面的字体颜色
		textView.textColor = UIColor.black
		//设置文本字体,使用系统默认字体，指定18号字号
		textView.font = UIFont.systemFont(ofSize: 18)
		//设置显示内容
		textView.text = "我是TextView,我是多行TextView，\n 会滚动的的TextView哦， 我是TextView,我是多行TextView，会滚动的的TextView哦，"
		//文本对齐方式, 一般都是左对齐吧
		textView.textAlignment = .left
		//设置圆角，比较常用
		textView.layer.cornerRadius = 10
		textView.layer.masksToBounds = true
		//是否允许进行编辑, 当为fasle时，是无法获取光标的，只能选择、复制等非编辑操作
		textView.isEditable = true
		//是否可以滚动，默认为true
		textView.isScrollEnabled = true
		//键盘类型
		textView.keyboardType = .default
		// 返回键的类型,比较有用
		textView.returnKeyType = .done
		//自适应高度
		textView.autoresizingMask = .flexibleHeight
		//设置内边距
		textView.textContainerInset = UIEdgeInsets(top: 8, left: 10, bottom: 8, right: 4)
		
		//-------------指定代理------------------------------
		textView.delegate = self
		// 监听输入
		NotificationCenter.default.addObserver(self, selector:#selector(self.textDidChange), name: UITextView.textDidChangeNotification, object: nil)
	
	}
	
  @objc
	func textDidChange() {
		print("正在输入…………")
	}
	
	// 键盘处理
	override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
		 //某个textview或view失去了响应者，即收起键盘了
		 self.textView.resignFirstResponder()
		 self.textField.resignFirstResponder()
		 //或注销当前view(或它下属嵌入的text fields)的first responder 状态，即可关闭其子控件键盘
		 //self.view?.endEditing(false)
	}

	// 监听输入字符，获取当前输入值
	// 并通过判断textView点击return（换行）是否是换行，可以结束编辑，即关闭键盘
	func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
				 print(text)
				 print(textView.text ?? "")
				 if text == "\n" {
						 self.view?.endEditing(false)
						 return false
				 }
				 //字数限制，在这里我的处理是给了一个简单的提示，
				 if range.location >= 100 {
						 print("超过100字了，无法继续输入了")
						 return false
				 }
				 return true
	}
	


	// ------------------------------------ TextField ----------------------
	func initTextField() {
			//添加到视图上
			view.addSubview(textField)
			/*
			无边框：none
			直线边框：line
			圆角矩形边框:roundedRect
			边框+阴影：bezel
			*/
		 textField.borderStyle = .roundedRect
			//设置TTextField提示文字
			textField.placeholder = "请输入用户名"
		  //TextField密码输入框，用于输入密码
		  textField.isSecureTextEntry = true
			//使TextField在界面打开时就获取焦点，并弹出输入框
			textField.becomeFirstResponder()
			//使TextField失去焦点，并收回键盘
			//textField.resignFirstResponder()
			//将代理设置本控制器，并在class加入UITextFieldDelegate
		  textField.delegate = self
		
		  // 其它属性和方法，类似TextView，可以参考
	}
}

